/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package ventas.beans;

import abstractClasses.AbstractListadoEntidades;
import entities.LineaPedido;
import entities.NivelPrecio;
import entities.Pedido;
import entities.PvpInternacional;
import facades.PedidoFacade;
import facades.PvpInternacionalFacade;
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
import java.io.Serializable;
import java.math.BigDecimal;
import java.math.RoundingMode;
import javax.inject.Inject;
import org.apache.commons.collections.map.MultiKeyMap;
import qualifiers.resources.MultiplicadoresCategoriasYSexosMap;
import qualifiers.resources.MultplicadoresProductosYPedidosMap;
import qualifiers.resources.NivelPrecioNormal;

/**
 *
 * @author damfercer
 */
@Named(value = "listadoPedidosBean")
@SessionScoped
public class ListadoPedidosBean extends AbstractListadoEntidades<Pedido, PedidoFacade> implements Serializable {
   
    @Inject
    @MultplicadoresProductosYPedidosMap
    private MultiKeyMap mapProductosYPedidos;
    @Inject
    @MultiplicadoresCategoriasYSexosMap
    private MultiKeyMap mapCategoriasYSexos;
    @Inject
    private MultiplicadoresBean multiplicadoresBean;
    @Inject
    private PvpInternacionalFacade pvpInternacionalFacade;
    @Inject
    @NivelPrecioNormal
    NivelPrecio nivelPrecioNormal;
    /**
     * Creates a new instance of ListadoPedidosBean
     */
    public ListadoPedidosBean() {
    }
    
    /*public void onNuevaFactura(@Observes @EventoEntidadCreada FacturaMultimarca f){
        if(f.getPedido().getFacturaMultimarcaList()==null){
            f.getPedido().setFacturaMultimarcaList(new ArrayList<FacturaMultimarca>());
        }
        f.getPedido().getFacturaMultimarcaList().add(f);
    }*/

    
    public String irAEditar(){
        return "/views/ventas/EditarPedido?faces-redirect=true";
    }
    
    public String irAEstado(){
        return "/views/ventas/EstadoPedido?faces-redirect=true";
    }
    
    public String irANuevaFactura(){
        return "/views/ventas/NuevaFactura?faces-redirect=true";
    }
    
    public BigDecimal getTotal(Pedido pedido){
        BigDecimal total=BigDecimal.ZERO;
        if(pedido!=null && pedido.getLineaPedidoList()!=null){
            for (LineaPedido lineaPedido : pedido.getLineaPedidoList()) {
                if(pedido.getCliente().getPaisFiscal().getDescripcion().equals("Spain")){
                    total=total.add(lineaPedido.getProductoTalla().getProducto().getPvp().multiply(new BigDecimal(lineaPedido.getCantidad())).divide(getMultiplicadoresBean().recuperarMultiplicadorDeProductoYPedido(lineaPedido.getProductoTalla().getProducto(), pedido), RoundingMode.HALF_UP));
                }
                else{
                    PvpInternacional pvpInternacional=pvpInternacionalFacade.getPvpInternacionalDeProductoNivelPrecioYPais(lineaPedido.getProductoTalla().getProducto(), pedido.getCliente().getPaisFiscal(),nivelPrecioNormal);
                    if(pvpInternacional!=null){
                        total=total.add(pvpInternacional.getPvp().multiply(new BigDecimal(lineaPedido.getCantidad())).divide(getMultiplicadoresBean().recuperarMultiplicadorDeProductoYPedido(lineaPedido.getProductoTalla().getProducto(), pedido), RoundingMode.HALF_UP));
                    }
                }
            }  
        }
        return total;
    }

    /**
     * @return the multiplicadoresBean
     */
    public MultiplicadoresBean getMultiplicadoresBean() {
        return multiplicadoresBean;
    }

    /**
     * @param multiplicadoresBean the multiplicadoresBean to set
     */
    public void setMultiplicadoresBean(MultiplicadoresBean multiplicadoresBean) {
        this.multiplicadoresBean = multiplicadoresBean;
    }
}
